###Commande systeme####


######Le but de cette partie est creer un fichier contenant le nombre de balise #########



cree_expression2<-function(regex,chaine){

mon_expression<-paste(chaine,regex,'\" | wc -l )',sep="")
return(mon_expression)
}

######Pour la creation du corpus ########

nb_balise<-function(N,nomdossier,nomdossier2,liste_fic,regex) {

chaine_fixe<-paste('$(cat ',nomdossier,'/',nomdossier2,'/',liste_fic[N],' | grep \"',sep="")
chaine_complete<-sapply(regex,cree_expression2,chaine_fixe)
chaine_complete<-paste(chaine_complete,collapse=" ")
chaine_complete<-paste('(echo',chaine_complete,nomdossier2,')>>balises.txt',sep=" ")
return(chaine_complete)
}


###### A partir de la liste de dossier des classes, on cree la moyenne pour chaque classe du nombre des balises
balise<-function(N,list_dossier,nomdossier,regex) {

nomdossier2<-list_dossier[N];
liste_fic<-dir(paste(nomdossier,'/',list_dossier[N],sep=""))
chaine<-sapply(1:length(liste_fic),nb_balise,nomdossier,nomdossier2,liste_fic,regex)
sapply(chaine,system)  
}

get_regex<-function(){

regex<-c("<[a-A] href.*>","<[img-IMG].*>","<[tr-TR].*>","<[table-TABLE].*>","<[input-INPUT]*value=.*>","<[li-LI].*>","<[ul-UL].*>","<[p-P].*>") ######on peut ajouter une expression reguliere
return(regex)

}

construire_data<-function(){
regex=get_regex()
system('rm balises.txt')
nomdossier<-'../../Projet'
liste_dossier <- dir(nomdossier)
chaine_regex<-paste('(echo \"',paste(regex,collapse=" "),'\")>>balises.txt',sep=" ")
#print(chaine_regex)
system(chaine_regex)
#print(paste('liste dossier : ',liste_dossier))
sapply(1:length(liste_dossier),balise,liste_dossier,nomdossier,regex)

data<-read.table('balises.txt',stringsAsFactors=FALSE)
data<-data[-1,]

return(data)
}




##########Ceci est la partie pour le traitement d'un unique texte a classer##############


cree_expression2_texte<-function(regex,chaine){
mon_expression<-paste(chaine,regex,'\" | wc -l )',sep="")
return(mon_expression)
}


nb_balise_texte<-function(mon_texte,regex) {

chaine_fixe<-paste('$(cat ',mon_texte,' | grep \"',sep="")
chaine_complete<-sapply(regex,cree_expression2,chaine_fixe)
chaine_complete<-paste(chaine_complete,collapse=" ")
chaine_complete<-paste('(echo',chaine_complete,')>>balises_texte.txt',sep=" ")
system(chaine_complete)
}

#system('rm balises_texte.txt')
#print(chaine_regex)
#system(chaine_regex)
#print(paste('liste dossier : ',liste_dossier))
#nb_balise_texte('../../Projet/accueil/front_page01_01_03_ind.htm',regex)


##########Partie sur le classement du fichier##############





somme<-function(N,ligne,data,data_t){

data<-data[,-ncol(data)]
x<-as.numeric(data[[N]][ligne])
y<-as.numeric(data_t[[N]])

res<-x-y
return(abs(res)^2)

}

distance_euclidienne<-function(ligne,data,data_t){
#print(length(x))

vecteur<-sapply(1:length(data_t),somme,ligne,data,data_t)

dist<-sqrt(sum(vecteur))
return(dist)
}

classement<-function(N,vecteur,data){

return(data[[ncol(data)]][(vecteur[N])])
}


kplus_proches_voisins<-function(k,vdistance){

i<-1
vec<-vector(length=k)
copie<-vdistance
while(i<k+1){

	vec[i]<-(which.min(copie)+(i-1))
	copie<-copie[-which.min(copie)]
	i<-i+1
}
return(vec)
}

majoritaire<-function(vecteur){

nom<-c("accueil","blog","commerce","FAQ","home","liste","recherche")
maj<-vector(length=length(nom))
maj[1]<-sum(vecteur==nom[1])
maj[2]<-sum(vecteur==nom[2])
maj[3]<-sum(vecteur==nom[3])
maj[4]<-sum(vecteur==nom[4])
maj[5]<-sum(vecteur==nom[5])
maj[6]<-sum(vecteur==nom[6])
maj[7]<-sum(vecteur==nom[7])
names(nom)<-maj
#print(which.max(maj))
return(nom[(which.max(maj))])
}

classer<-function(dossier){

regex<-get_regex()
data<-read.table('balises.txt',stringsAsFactors=FALSE)
data<-data[-1,]
#data<-construire_data()
system('rm balises_texte.txt')
nb_balise_texte(dossier,regex)
data_t<-read.table('balises_texte.txt',stringsAsFactors=FALSE)
v<-sapply(1:nrow(data),distance_euclidienne,data,data_t)
voisin<-kplus_proches_voisins(2,v)
vec_class<-sapply(1:length(voisin),classement,v,data)
classe<-majoritaire(vec_class)
return(classe)
}



#print(vect)
#print(typeof(data))
#print(typeof(data_t))